package entity

import dom "a-common/domain"

// SysRole 系统角色表
type SysRole struct {
	RoleId            int64  `xorm:"pk autoincr notnull"`     // 角色ID
	RoleName          string `xorm:"varchar(30) notnull"`     // 角色名称
	RoleKey           string `xorm:"varchar(30) notnull"`     // 角色权限字符串
	RoleSort          int    `xorm:"notnull"`                 // 显示顺序
	DataScope         string `xorm:"varchar(1)"`              // 数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限 5:仅本人数据）
	MenuCheckStrictly bool   `xorm:"tinyint"`                 // 菜单树选择项是否关联显示
	DeptCheckStrictly bool   `xorm:"tinyint"`                 // 部门树选择项是否关联显示
	Status            string `xorm:"varchar(1) default('1')"` // 角色状态（1正常 0停用）
	dom.BaseStruct    `xorm:"extends"`
}

type SysRoleMenuVo struct {
	RoleId  int64  `json:"roleId,omitempty" xorm:"pk"`
	RoleKey string `json:"roleKey,omitempty"`
	MenuId  int64  `json:"menuId,omitempty"`
	Perms   string `json:"perms,omitempty"`
}

// SysRoleVo 映射
type SysRoleVo struct {
	RoleId            int64  `json:"roleId,omitempty" xorm:"pk"`
	RoleName          string `json:"roleName,omitempty"`
	RoleKey           string `json:"roleKey,omitempty"`
	RoleSort          int    `json:"roleSort,omitempty"`
	DataScope         string `json:"dataScope,omitempty"`
	MenuCheckStrictly bool   `json:"menuCheckStrictly,omitempty"`
	DeptCheckStrictly bool   `json:"deptCheckStrictly,omitempty"`
	Status            string `json:"status,omitempty"`
}
type SysRolePageVo struct {
	SysRoleVo    `xorm:"extends"`
	dom.BaseJson `xorm:"extends"`
}

// SysRoleDto 传输
type SysRoleDto struct {
	SysRolePageVo
	MenuIds []int64       `xorm:"-" json:"menuIds"`
	DeptIds []int64       `xorm:"-" json:"deptIds"`
	Params  dom.ParamTime `json:"params" `
	dom.BaseJson
	dom.PageDto
}

func (m *SysRoleDto) Validator() error {
	if m.PageNum < 1 {
		m.PageNum = 1
	}
	if m.PageSize < 1 {
		m.PageSize = 10
	}
	return nil
}

// SysRoleExportVo 导出
type SysRoleExportVo struct {
	RoleId    int64  `excel:"name:角色ID;" xorm:"pk"`
	RoleName  string `excel:"name:角色名称;"`
	RoleKey   string `excel:"name:角色权限;"`
	RoleSort  int    `excel:"name:角色排序;"`
	DataScope string `excel:"name:数据范围;"`
	Status    string `excel:"name:角色状态;"`
}
